package review.Day_0331;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author zxc
 * @date 2023/03/31 22:13
 **/
public class Solution02 {
    Queue<Integer> queue;
    Queue<Integer> tempQueue;
    public Solution02() {
        // 初始化 主队列和辅助队列
        queue = new LinkedList<>();
        tempQueue = new LinkedList<>();
    }

    // 插入操作 ：
    // 即，保证主队列queue中，所有元素排列都是先进后置，后进前置;
    public void push(int x) {
        // 1.向辅助栈中插入元素;
        tempQueue.offer(x);
        // 2.将主栈中所有元素逐个弹出 && 添加到辅助栈中
        while(!queue.isEmpty()){
            tempQueue.offer(queue.poll());
        }
        // 3.主栈queue = 辅助栈tempQueue && 辅助栈tempQueue，则置为空;
        queue = tempQueue;
        tempQueue = new LinkedList<>();
    }

    // 删除队列中元素操作 ：
    // （队列 ：先进先出；栈 ：后进先出）
    public int pop() {
        // 直接返回主队列queue的队首元素即可;
        return queue.poll();
    }

    // 返回栈顶元素 ：
    public int top() {
        // 直接返回主队列queue的队首元素即可;
        return queue.peek();
    }

    // 判断栈是否为空 ：
    public boolean empty() {
        // 即，返回主队列是否为空即可;
        return queue.isEmpty();
    }
}
